Script to focus on daily network properties/topology at Boat Ramp site.
## Lake PIT Length Sex
## 1 Parley 038305 685 M
## 2 Parley 038306 370 M
## 3 Parley 038309 740 F
## 4 Parley 038312 735 F
## 5 Parley 038314 335 M
## 6 Parley 038315 725 F
## [1] 613
## PIT Date Time Antenna DATETIME Site Lake Length
## 1 038301 2019-07-23 22:46:00.66 A1 2019-07-23 22:46:00 B Parley 362
## 2 038301 2019-07-23 22:45:59.05 A1 2019-07-23 22:45:59 B Parley 362
## 3 038306 2019-10-03 03:32:23.84 A1 2019-10-03 03:32:23 B Parley 370
## 4 038306 2019-10-03 03:32:20.22 A1 2019-10-03 03:32:20 B Parley 370
## 5 038306 2019-10-03 04:03:20.96 A1 2019-10-03 04:03:20 B Parley 370
## 6 038306 2019-10-03 03:31:47.26 A1 2019-10-03 03:31:47 B Parley 370
## Sex
## 1 M
## 2 M
## 3 M
## 4 M
## 5 M
## 6 M
## [1] 99
How many days out of the total number of sampling days did fish visit any of the antenna at Boat Ramp?
dates<-unique(merged_br$DATETIME) #how many dates of observation in dataset?
(min_date<-min(dates))
## [1] "2019-07-23 22:45:59 CDT"
(max_date<-max(dates))
## [1] "2019-10-29 00:06:05 CDT"
start_date<-as.POSIXct("2019-07-23 12:00:00 CDT")
end_date<-as.POSIXct("2019-10-29 12:00:00 CDT")
num_days<-as.numeric(end_date-start_date)
superfish<-data.frame(fishID=unique(merged_br$PIT), nvisit=rep(NA,length(unique(merged_br$PIT))))
for (i in 1:length(unique(merged_br$PIT))){
fishID<-unique(merged_br$PIT)[i]
visit_count<-0
for (j in 1:num_days){
sub_combined<-merged_br %>% filter(DATETIME >= as.POSIXct(start_date+ (j-1)*86400, tz="CDT") & DATETIME <= as.POSIXct(start_date + j*86400, tz="CDT")) #86400 seconds/24 hours
fishID %in% sub_combined$PIT
if(fishID %in% sub_combined$PIT){
visit_count<-visit_count+1
}
}
superfish$nvisit[i]<-visit_count
}
hist(superfish$nvisit, xlab="Number of sampling days", main="")
network_df <-data.frame(day=1:num_days, nnodes=rep(NA,num_days), mean_degree=rep(NA, num_days), transitivity=rep(NA, num_days), edge_density=rep(NA, num_days), diameter=rep(NA, num_days), centralization=rep(NA, num_days), eigen= rep(NA, num_days), btwn= rep(NA, num_days),modularity=rep(NA, num_days))
degree_list<-NULL
for(i in 1:num_days){
sub_combined<-merged_br %>% filter(DATETIME >= as.POSIXct(start_date+ (i-1)*86400, tz="CDT") & DATETIME <= as.POSIXct(start_date + i*86400, tz="CDT")) #86400 seconds/24 hours
# print(sub_combined)
edgelist<-data.frame(PIT=sub_combined$PIT, Reader=sub_combined$Antenna)
network_df$nnodes[i]<-length(unique(sub_combined$PIT))
if(nrow(edgelist)>0){
A <- spMatrix(nrow=length(unique(edgelist$PIT)),
ncol=length(unique(edgelist$Reader)),
i = as.numeric(factor(edgelist$PIT)),
j = as.numeric(factor(edgelist$Reader)),
x = rep(1, length(as.numeric(edgelist$PIT))) )
row.names(A) <- levels(factor(edgelist$PIT))
colnames(A) <- levels(factor(edgelist$Reader))
bi<-graph.incidence(A, mode="all") #undirected, named graph that is bipartite
pr<-bipartite.projection(bi)
#co-membership network of nodes ($proj1), or a network of groups that share members ($proj2)
plot(pr$proj1, main=paste("Day =", i))
g<- ggplot(data=sub_combined, aes(DATETIME, as.factor(PIT), color=Antenna)) +
geom_point(alpha=0.5)
print(g)
network_df$mean_degree[i]<-mean(degree_distribution(pr$proj1))
network_df$transitivity[i]<-transitivity(pr$proj1, "global")
network_df$edge_density[i]<-edge_density(pr$proj1, loops=F)
network_df$diameter[i]<-diameter(pr$proj1, directed=F, weights=NA)
network_df$centralization[i]<-centr_degree(pr$proj1, loops=FALSE, normalized=T)$centralization
network_df$eigen[i]<-centr_eigen(pr$proj1, directed=F, normalized=T)$centralization
network_df$btwn[i]<-centr_betw(pr$proj1, directed=F, normalized=T)$centralization
network_df$modularity[i]<-modularity(pr$proj1, membership(cluster_walktrap(pr$proj1)))
}
}
head(network_df)
## day nnodes mean_degree transitivity edge_density diameter centralization
## 1 1 1 1.0 NaN NaN 0 NaN
## 2 2 3 0.5 NaN 0.3333333 1 0.5
## 3 3 2 1.0 NaN 0.0000000 0 NaN
## 4 4 0 NA NA NA NA NA
## 5 5 0 NA NA NA NA NA
## 6 6 0 NA NA NA NA NA
## eigen btwn modularity
## 1 0 NaN 0.0
## 2 1 0 -0.5
## 3 NaN NaN 0.0
## 4 NA NA NA
## 5 NA NA NA
## 6 NA NA NA
Look at changes in network topology through time
plot(network_df$day, network_df$nnodes, type="l", xlab= "Sampling day", ylab="Number of nodes in daily network")
points(network_df$day, network_df$nnodes, col="red")
plot(network_df$day, network_df$edge_density, type="l", xlab= "Sampling day", ylab="Edge density")
points(network_df$day, network_df$edge_density, col="blue")
plot(network_df$day, network_df$transitivity, type="l", xlab= "Sampling day", ylab="Global transitivity")
points(network_df$day, network_df$transitivity, col="blue")
plot(network_df$day, network_df$diameter, type="l", xlab= "Sampling day", ylab="Network diameter")
points(network_df$day, network_df$diameter, col="blue")
plot(network_df$day, network_df$centralization, type="l", xlab= "Sampling day", ylab="Normalized centralization")
points(network_df$day, network_df$centralization, col="blue")
plot(network_df$day, network_df$modularity, type="l", xlab= "Sampling day", ylab="Modularity")
points(network_df$day, network_df$modularity, col="blue")
plot(network_df$day, network_df$eigen, type="l", xlab= "Sampling day", ylab="Eigenvalue centralization")
points(network_df$day, network_df$eigen, col="blue")
plot(network_df$day, network_df$btwn, type="l", xlab= "Sampling day", ylab="Betweenness centralization")
points(network_df$day, network_df$btwn, col="blue")
A1<-merged_br %>% filter(Antenna == "A1")
A2<-merged_br %>% filter(Antenna == "A2")
A3<-merged_br %>% filter(Antenna == "A2")
length(unique(A1$PIT))
## [1] 67
length(unique(A2$PIT))
## [1] 83
length(unique(A3$PIT))
## [1] 83
asnipe package